home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / laplace / print.f < prev    next >
Text File  |  1993-04-23  |  1KB  |  51 lines

  1.       PROGRAM LAPLACE
  2. c     solving the laplace pde
  3.       REAL F(:,:), DF(:,:)
  4.       INTEGER MAXX, MAXY
  5.       REAL FMAX
  6.       INTEGER ITER
  7. c     read in sizes 
  8.       PRINT *,'MAXX = (e.g. 64) '
  9.       READ *,MAXX
  10.       PRINT *,'MAXY = (e.g. 64) '
  11.       READ *,MAXY
  12. c     allocating memory
  13.       ALLOCATE (F(MAXX,MAXY), DF(1:MAXX,MAXY))
  14. c     initialization
  15.       F = 2.
  16.       F(:,MAXY) = 1.
  17.       forall (i=2:maxx-1,j=2:maxy-1)
  18.          f(i,j) =  0
  19.       end forall
  20.       ITER = 0
  21.       FMAX = 1
  22. c     iteration
  23.       DF = 0
  24.       DO WHILE (FMAX .gt. 0.001)
  25.          ITER = ITER + 1
  26.          do i = 1, maxx
  27.             do j = 1, maxy
  28.                print *, 'f (i,j) ', i, j, f(i,j)
  29.             end do
  30.          end do
  31.          forall (i=2:maxx-1,j=2:maxy-1)
  32.            df(i,j) = f(i,j+1)
  33. c          df(i,j) = (f(i,j+1) + f(i,j-1) + f(i-1,j) + f(i+1,j))*0.25
  34. c    $               - f(i,j)
  35.          end forall
  36.          do i = 1, maxx
  37.             do j = 1, maxy
  38.                print *, 'df (i,j) ', i, j, df(i,j)
  39.             end do
  40.          end do
  41.          forall (i=2:maxx-1,j=2:maxy-1)
  42.             f(i,j) = f(i,j) + df(i,j)
  43.          end forall
  44.          DF = ABS(DF)
  45.          FMAX = MAXVAL (DF)
  46.          PRINT *,'iteration ',ITER,'  Max = ',FMAX
  47.       END DO
  48.       PRINT *, ITER, ' iterations needed'
  49.       deallocate (df, f)
  50.       END 
  51.